﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace BigData.DataContracts.Objects.Reddit
{
    [DataContract]
    public abstract class UserCreatedThing : BigData.BaseTypes.BigDataDBObject_FiniteLife
    {
        /// <summary>
        /// The number of upvotes. does this include one's own upvote?
        /// </summary>
        [DataMember]
        public int ups { get; set; }	            
        /// <summary>
        /// T number of downvote. does this include one's own downvote?
        /// </summary>
        [DataMember]
        public int downs { get; set; }	            
        /// <summary>
        /// True if thing is liked by the user. false if thing is disliked. null if the user is neutral on the thing. Certain languages such as Java may need to use a boolean wrapper that supports null assignment.
        /// </summary>
        [DataMember]
        public bool? likes { get; set; }	        
        /// <summary>
        /// The localized time of creation. ex: "1331042771.0"
        /// </summary>
        [DataMember]
       public long created { get; set; }	        
        /// <summary>
        /// The UTC time this item was created since the unix start time in seconds. ex. "1331017571.0"
        /// </summary>
        [DataMember]
        public long created_utc { get; set; }	    
        /// <summary>
        /// Reddit's UID for stuff
        /// </summary>
        [DataMember]
        public string name { get; set; }
        /// <summary>
        /// All the users which are associated with this object
        /// </summary>
        [BsonRepresentation(BsonType.ObjectId)]
        public List<string> AssociatedUserIds { get; set; }
    }
}
